- need unit tests! (especially interested in TTable and Zobrist/BoardImpl.hashCode()). 

- break MoveParser down

- create a class just for XBoard , no protocol specific stuff outside of it.

- lots to do with GameStatusChecker: DRAW_MATERIAL,DAW_REP,DRAW_BY_50

- lots of "instanceof" operations in AttackImpl.

- need a rootSearch before going into stopping search

- don't like the "Rooks.BLACK_ROOK.getDirections()" type stuff in AttackImpl.  Perhaps another level
of abstraction?  (e.g. make "Rook" abstract?)  Traits would be handy here?  Can getDirections() be static?

- Square.valueOf(file,rank) <-- how expensive?? -- does a HashMap.get followed by a List.get (expensive!)

- more 'instanceof' ops in BoardImpl.applyMove() and undoLastMove()

- BoardImpl.hashCode() looks very expensive

- get BoardVerifier() calls out of BoardImpl.  Use AOP or a decorator (e.g. DebugBoardImpl)

- KingSquares.compute() is expensive and can probably be cached somehow.  Also KingSquares.compute() ... see Square

- How expensive is Collections.unmodifiableList()?? put a separate list in the static block in Square??

- EvalImpl: lots of 'instanceof' operations

- TTable: why is tt static?

- TTable.getKey() : is 0xFFFFF a valid mask?

- MoveGenImpl.genLegalMoves() -- moveIter.remove() looks expensive.  Just create a new ArrayList?
